<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/uprobes.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/uprobes.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X0xJTlVYX1VQUk9CRVNfSF8w"><span class="b">_LINUX_UPROBES_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X0xJTlVYX1VQUk9CRVNfSF8w"><span class="b">_LINUX_UPROBES_H</span></a>
<a name="3" /><span class="True">       3:</span> <span class="k">/*</span>
<a name="4" /><span class="True">       4:</span> <span class="k"> * User-space Probes (UProbes)</span>
<a name="5" /><span class="True">       5:</span> <span class="k"> *</span>
<a name="6" /><span class="True">       6:</span> <span class="k"> * This program is free software; you can redistribute it and/or modify</span>
<a name="7" /><span class="True">       7:</span> <span class="k"> * it under the terms of the GNU General Public License as published by</span>
<a name="8" /><span class="True">       8:</span> <span class="k"> * the Free Software Foundation; either version 2 of the License, or</span>
<a name="9" /><span class="True">       9:</span> <span class="k"> * (at your option) any later version.</span>
<a name="10" /><span class="True">      10:</span> <span class="k"> *</span>
<a name="11" /><span class="True">      11:</span> <span class="k"> * This program is distributed in the hope that it will be useful,</span>
<a name="12" /><span class="True">      12:</span> <span class="k"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="13" /><span class="True">      13:</span> <span class="k"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="14" /><span class="True">      14:</span> <span class="k"> * GNU General Public License for more details.</span>
<a name="15" /><span class="True">      15:</span> <span class="k"> *</span>
<a name="16" /><span class="True">      16:</span> <span class="k"> * You should have received a copy of the GNU General Public License</span>
<a name="17" /><span class="True">      17:</span> <span class="k"> * along with this program; if not, write to the Free Software</span>
<a name="18" /><span class="True">      18:</span> <span class="k"> * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</span>
<a name="19" /><span class="True">      19:</span> <span class="k"> *</span>
<a name="20" /><span class="True">      20:</span> <span class="k"> * Copyright (C) IBM Corporation, 2008-2012</span>
<a name="21" /><span class="True">      21:</span> <span class="k"> * Authors:</span>
<a name="22" /><span class="True">      22:</span> <span class="k"> *    Srikar Dronamraju</span>
<a name="23" /><span class="True">      23:</span> <span class="k"> *    Jim Keniston</span>
<a name="24" /><span class="True">      24:</span> <span class="k"> * Copyright (C) 2011-2012 Red Hat, Inc., Peter Zijlstra &lt;pzijlstr@redhat.com&gt;</span>
<a name="25" /><span class="True">      25:</span> <span class="k"> */</span>
<a name="26" /><span class="True">      26:</span> 
<a name="27" /><span class="True">      27:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">errno</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="28" /><span class="True">      28:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">rbtree</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="29" /><span class="True">      29:</span> 
<a name="30" /><span class="True">      30:</span> <span class="m">struct</span> <span class="b">vm_area_struct</span><span class="f">;</span>
<a name="31" /><span class="True">      31:</span> <span class="m">struct</span> <span class="b">mm_struct</span><span class="f">;</span>
<a name="32" /><span class="True">      32:</span> <span class="m">struct</span> <span class="b">inode</span><span class="f">;</span>
<a name="33" /><span class="True">      33:</span> <span class="m">struct</span> <span class="b">notifier_block</span><span class="f">;</span>
<a name="34" /><span class="True">      34:</span> 
<a name="35" /><span class="True">      35:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0FSQ0hfU1VQUE9SVFNfVVBST0JFU18w"><span class="b">CONFIG_ARCH_SUPPORTS_UPROBES</span></a>
<a name="36" /><span class="True">      36:</span> <span class="f">#</span> <span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">uprobes</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="37" /><span class="True">      37:</span> <span class="f">#</span><span class="n">endif</span>
<a name="38" /><span class="True">      38:</span> 
<a name="39" /><span class="True">      39:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VVBST0JFX0hBTkRMRVJfUkVNT1ZFXzA_"><span class="b">UPROBE_HANDLER_REMOVE</span></a>        <span class="c">1</span>
<a name="40" /><span class="True">      40:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VVBST0JFX0hBTkRMRVJfTUFTS18w"><span class="b">UPROBE_HANDLER_MASK</span></a>        <span class="c">1</span>
<a name="41" /><span class="True">      41:</span> 
<a name="42" /><span class="True">      42:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_TUFYX1VSRVRQUk9CRV9ERVBUSF8w"><span class="b">MAX_URETPROBE_DEPTH</span></a>        <span class="c">64</span>
<a name="43" /><span class="True">      43:</span> 
<a name="44" /><span class="True">      44:</span> <span class="m">enum</span> <span class="b">uprobe_filter_ctx</span> <span class="f">{</span>
<a name="45" /><span class="True">      45:</span>     <span class="b">UPROBE_FILTER_REGISTER</span><span class="f">,</span>
<a name="46" /><span class="True">      46:</span>     <span class="b">UPROBE_FILTER_UNREGISTER</span><span class="f">,</span>
<a name="47" /><span class="True">      47:</span>     <span class="b">UPROBE_FILTER_MMAP</span><span class="f">,</span>
<a name="48" /><span class="True">      48:</span> <span class="f">}</span><span class="f">;</span>
<a name="49" /><span class="True">      49:</span> 
<a name="50" /><span class="True">      50:</span> <span class="m">struct</span> <span class="b">uprobe_consumer</span> <span class="f">{</span>
<a name="51" /><span class="True">      51:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">handler</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">uprobe_consumer</span> <span class="f">*</span><span class="b">self</span><span class="f">,</span> <span class="m">struct</span> <span class="b">pt_regs</span> <span class="f">*</span><span class="b">regs</span><span class="f">)</span><span class="f">;</span>
<a name="52" /><span class="True">      52:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">ret_handler</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">uprobe_consumer</span> <span class="f">*</span><span class="b">self</span><span class="f">,</span>
<a name="53" /><span class="True">      53:</span>                 <span class="m">unsigned</span> <span class="m">long</span> <span class="b">func</span><span class="f">,</span>
<a name="54" /><span class="True">      54:</span>                 <span class="m">struct</span> <span class="b">pt_regs</span> <span class="f">*</span><span class="b">regs</span><span class="f">)</span><span class="f">;</span>
<a name="55" /><span class="True">      55:</span>     <span class="m">bool</span> <span class="f">(</span><span class="f">*</span><span class="b">filter</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">uprobe_consumer</span> <span class="f">*</span><span class="b">self</span><span class="f">,</span>
<a name="56" /><span class="True">      56:</span>                 <span class="m">enum</span> <span class="b">uprobe_filter_ctx</span> <span class="b">ctx</span><span class="f">,</span>
<a name="57" /><span class="True">      57:</span>                 <span class="m">struct</span> <span class="b">mm_struct</span> <span class="f">*</span><span class="b">mm</span><span class="f">)</span><span class="f">;</span>
<a name="58" /><span class="True">      58:</span> 
<a name="59" /><span class="True">      59:</span>     <span class="m">struct</span> <span class="b">uprobe_consumer</span> <span class="f">*</span><span class="b">next</span><span class="f">;</span>
<a name="60" /><span class="True">      60:</span> <span class="f">}</span><span class="f">;</span>
<a name="61" /><span class="True">      61:</span> 
<a name="62" /><span class="False">      62:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_UPROBES</span>
<a name="63" /><span class="False">      63:</span> <span class="m">enum</span> <span class="b">uprobe_task_state</span> <span class="f">{</span>
<a name="64" /><span class="False">      64:</span>     <span class="b">UTASK_RUNNING</span><span class="f">,</span>
<a name="65" /><span class="False">      65:</span>     <span class="b">UTASK_SSTEP</span><span class="f">,</span>
<a name="66" /><span class="False">      66:</span>     <span class="b">UTASK_SSTEP_ACK</span><span class="f">,</span>
<a name="67" /><span class="False">      67:</span>     <span class="b">UTASK_SSTEP_TRAPPED</span><span class="f">,</span>
<a name="68" /><span class="False">      68:</span> <span class="f">}</span><span class="f">;</span>
<a name="69" /><span class="False">      69:</span> 
<a name="70" /><span class="False">      70:</span> <span class="k">/*</span>
<a name="71" /><span class="False">      71:</span> <span class="k"> * uprobe_task: Metadata of a task while it singlesteps.</span>
<a name="72" /><span class="False">      72:</span> <span class="k"> */</span>
<a name="73" /><span class="False">      73:</span> <span class="m">struct</span> <span class="b">uprobe_task</span> <span class="f">{</span>
<a name="74" /><span class="False">      74:</span>     <span class="m">enum</span> <span class="b">uprobe_task_state</span>        <span class="b">state</span><span class="f">;</span>
<a name="75" /><span class="False">      75:</span>     <span class="m">struct</span> <span class="b">arch_uprobe_task</span>        <span class="b">autask</span><span class="f">;</span>
<a name="76" /><span class="False">      76:</span> 
<a name="77" /><span class="False">      77:</span>     <span class="m">struct</span> <span class="b">return_instance</span>        <span class="f">*</span><span class="b">return_instances</span><span class="f">;</span>
<a name="78" /><span class="False">      78:</span>     <span class="m">unsigned</span> <span class="m">int</span>            <span class="b">depth</span><span class="f">;</span>
<a name="79" /><span class="False">      79:</span>     <span class="m">struct</span> <span class="b">uprobe</span>            <span class="f">*</span><span class="b">active_uprobe</span><span class="f">;</span>
<a name="80" /><span class="False">      80:</span> 
<a name="81" /><span class="False">      81:</span>     <span class="m">unsigned</span> <span class="m">long</span>            <span class="b">xol_vaddr</span><span class="f">;</span>
<a name="82" /><span class="False">      82:</span>     <span class="m">unsigned</span> <span class="m">long</span>            <span class="b">vaddr</span><span class="f">;</span>
<a name="83" /><span class="False">      83:</span> <span class="f">}</span><span class="f">;</span>
<a name="84" /><span class="False">      84:</span> 
<a name="85" /><span class="False">      85:</span> <span class="k">/*</span>
<a name="86" /><span class="False">      86:</span> <span class="k"> * On a breakpoint hit, thread contests for a slot.  It frees the</span>
<a name="87" /><span class="False">      87:</span> <span class="k"> * slot after singlestep. Currently a fixed number of slots are</span>
<a name="88" /><span class="False">      88:</span> <span class="k"> * allocated.</span>
<a name="89" /><span class="False">      89:</span> <span class="k"> */</span>
<a name="90" /><span class="False">      90:</span> <span class="m">struct</span> <span class="b">xol_area</span> <span class="f">{</span>
<a name="91" /><span class="False">      91:</span>     <span class="b">wait_queue_head_t</span>     <span class="b">wq</span><span class="f">;</span>        <span class="k">/* if all slots are busy */</span>
<a name="92" /><span class="False">      92:</span>     <span class="b">atomic_t</span>         <span class="b">slot_count</span><span class="f">;</span>    <span class="k">/* number of in-use slots */</span>
<a name="93" /><span class="False">      93:</span>     <span class="m">unsigned</span> <span class="m">long</span>         <span class="f">*</span><span class="b">bitmap</span><span class="f">;</span>    <span class="k">/* 0 = free slot */</span>
<a name="94" /><span class="False">      94:</span>     <span class="m">struct</span> <span class="b">page</span>         <span class="f">*</span><span class="b">page</span><span class="f">;</span>
<a name="95" /><span class="False">      95:</span> 
<a name="96" /><span class="False">      96:</span>     <span class="k">/*</span>
<a name="97" /><span class="False">      97:</span> <span class="k">     * We keep the vma&apos;s vm_start rather than a pointer to the vma</span>
<a name="98" /><span class="False">      98:</span> <span class="k">     * itself.  The probed process or a naughty kernel module could make</span>
<a name="99" /><span class="False">      99:</span> <span class="k">     * the vma go away, and we must handle that reasonably gracefully.</span>
<a name="100" /><span class="False">     100:</span> <span class="k">     */</span>
<a name="101" /><span class="False">     101:</span>     <span class="m">unsigned</span> <span class="m">long</span>         <span class="b">vaddr</span><span class="f">;</span>        <span class="k">/* Page(s) of instruction slots */</span>
<a name="102" /><span class="False">     102:</span> <span class="f">}</span><span class="f">;</span>
<a name="103" /><span class="False">     103:</span> 
<a name="104" /><span class="False">     104:</span> <span class="m">struct</span> <span class="b">uprobes_state</span> <span class="f">{</span>
<a name="105" /><span class="False">     105:</span>     <span class="m">struct</span> <span class="b">xol_area</span>        <span class="f">*</span><span class="b">xol_area</span><span class="f">;</span>
<a name="106" /><span class="False">     106:</span> <span class="f">}</span><span class="f">;</span>
<a name="107" /><span class="False">     107:</span> 
<a name="108" /><span class="False">     108:</span> <span class="m">extern</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X193ZWFrXzA_"><span class="b">__weak</span></a> <span class="b">set_swbp</span><span class="f">(</span><span class="m">struct</span> <span class="b">arch_uprobe</span> <span class="f">*</span><span class="b">aup</span><span class="f">,</span> <span class="m">struct</span> <span class="b">mm_struct</span> <span class="f">*</span><span class="b">mm</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">vaddr</span><span class="f">)</span><span class="f">;</span>
<a name="109" /><span class="False">     109:</span> <span class="m">extern</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_X193ZWFrXzA_"><span class="b">__weak</span></a> <span class="b">set_orig_insn</span><span class="f">(</span><span class="m">struct</span> <span class="b">arch_uprobe</span> <span class="f">*</span><span class="b">aup</span><span class="f">,</span> <span class="m">struct</span> <span class="b">mm_struct</span> <span class="f">*</span><span class="b">mm</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">vaddr</span><span class="f">)</span><span class="f">;</span>
<a name="110" /><span class="False">     110:</span> <span class="m">extern</span> <span class="m">bool</span> <a href="cpu.c_macros_ref.html#_X193ZWFrXzA_"><span class="b">__weak</span></a> <span class="b">is_swbp_insn</span><span class="f">(</span><span class="b">uprobe_opcode_t</span> <span class="f">*</span><span class="b">insn</span><span class="f">)</span><span class="f">;</span>
<a name="111" /><span class="False">     111:</span> <span class="m">extern</span> <span class="m">bool</span> <a href="cpu.c_macros_ref.html#_X193ZWFrXzA_"><span class="b">__weak</span></a> <span class="b">is_trap_insn</span><span class="f">(</span><span class="b">uprobe_opcode_t</span> <span class="f">*</span><span class="b">insn</span><span class="f">)</span><span class="f">;</span>
<a name="112" /><span class="False">     112:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">uprobe_write_opcode</span><span class="f">(</span><span class="m">struct</span> <span class="b">mm_struct</span> <span class="f">*</span><span class="b">mm</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">vaddr</span><span class="f">,</span> <span class="b">uprobe_opcode_t</span><span class="f">)</span><span class="f">;</span>
<a name="113" /><span class="False">     113:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">uprobe_register</span><span class="f">(</span><span class="m">struct</span> <span class="b">inode</span> <span class="f">*</span><span class="b">inode</span><span class="f">,</span> <span class="b">loff_t</span> <span class="b">offset</span><span class="f">,</span> <span class="m">struct</span> <span class="b">uprobe_consumer</span> <span class="f">*</span><span class="b">uc</span><span class="f">)</span><span class="f">;</span>
<a name="114" /><span class="False">     114:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">uprobe_apply</span><span class="f">(</span><span class="m">struct</span> <span class="b">inode</span> <span class="f">*</span><span class="b">inode</span><span class="f">,</span> <span class="b">loff_t</span> <span class="b">offset</span><span class="f">,</span> <span class="m">struct</span> <span class="b">uprobe_consumer</span> <span class="f">*</span><span class="b">uc</span><span class="f">,</span> <span class="m">bool</span><span class="f">)</span><span class="f">;</span>
<a name="115" /><span class="False">     115:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">uprobe_unregister</span><span class="f">(</span><span class="m">struct</span> <span class="b">inode</span> <span class="f">*</span><span class="b">inode</span><span class="f">,</span> <span class="b">loff_t</span> <span class="b">offset</span><span class="f">,</span> <span class="m">struct</span> <span class="b">uprobe_consumer</span> <span class="f">*</span><span class="b">uc</span><span class="f">)</span><span class="f">;</span>
<a name="116" /><span class="False">     116:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">uprobe_mmap</span><span class="f">(</span><span class="m">struct</span> <span class="b">vm_area_struct</span> <span class="f">*</span><span class="b">vma</span><span class="f">)</span><span class="f">;</span>
<a name="117" /><span class="False">     117:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">uprobe_munmap</span><span class="f">(</span><span class="m">struct</span> <span class="b">vm_area_struct</span> <span class="f">*</span><span class="b">vma</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">start</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">end</span><span class="f">)</span><span class="f">;</span>
<a name="118" /><span class="False">     118:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">uprobe_start_dup_mmap</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="119" /><span class="False">     119:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">uprobe_end_dup_mmap</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="120" /><span class="False">     120:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">uprobe_dup_mmap</span><span class="f">(</span><span class="m">struct</span> <span class="b">mm_struct</span> <span class="f">*</span><span class="b">oldmm</span><span class="f">,</span> <span class="m">struct</span> <span class="b">mm_struct</span> <span class="f">*</span><span class="b">newmm</span><span class="f">)</span><span class="f">;</span>
<a name="121" /><span class="False">     121:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">uprobe_free_utask</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">t</span><span class="f">)</span><span class="f">;</span>
<a name="122" /><span class="False">     122:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">uprobe_copy_process</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">t</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="123" /><span class="False">     123:</span> <span class="m">extern</span> <span class="m">unsigned</span> <span class="m">long</span> <a href="cpu.c_macros_ref.html#_X193ZWFrXzA_"><span class="b">__weak</span></a> <span class="b">uprobe_get_swbp_addr</span><span class="f">(</span><span class="m">struct</span> <span class="b">pt_regs</span> <span class="f">*</span><span class="b">regs</span><span class="f">)</span><span class="f">;</span>
<a name="124" /><span class="False">     124:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">uprobe_post_sstep_notifier</span><span class="f">(</span><span class="m">struct</span> <span class="b">pt_regs</span> <span class="f">*</span><span class="b">regs</span><span class="f">)</span><span class="f">;</span>
<a name="125" /><span class="False">     125:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">uprobe_pre_sstep_notifier</span><span class="f">(</span><span class="m">struct</span> <span class="b">pt_regs</span> <span class="f">*</span><span class="b">regs</span><span class="f">)</span><span class="f">;</span>
<a name="126" /><span class="False">     126:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">uprobe_notify_resume</span><span class="f">(</span><span class="m">struct</span> <span class="b">pt_regs</span> <span class="f">*</span><span class="b">regs</span><span class="f">)</span><span class="f">;</span>
<a name="127" /><span class="False">     127:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">uprobe_deny_signal</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="128" /><span class="False">     128:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">arch_uprobe_skip_sstep</span><span class="f">(</span><span class="m">struct</span> <span class="b">arch_uprobe</span> <span class="f">*</span><span class="b">aup</span><span class="f">,</span> <span class="m">struct</span> <span class="b">pt_regs</span> <span class="f">*</span><span class="b">regs</span><span class="f">)</span><span class="f">;</span>
<a name="129" /><span class="False">     129:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">uprobe_clear_state</span><span class="f">(</span><span class="m">struct</span> <span class="b">mm_struct</span> <span class="f">*</span><span class="b">mm</span><span class="f">)</span><span class="f">;</span>
<a name="130" /><span class="False">     130:</span> <span class="m">extern</span> <span class="m">int</span>  <span class="b">arch_uprobe_analyze_insn</span><span class="f">(</span><span class="m">struct</span> <span class="b">arch_uprobe</span> <span class="f">*</span><span class="b">aup</span><span class="f">,</span> <span class="m">struct</span> <span class="b">mm_struct</span> <span class="f">*</span><span class="b">mm</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">addr</span><span class="f">)</span><span class="f">;</span>
<a name="131" /><span class="False">     131:</span> <span class="m">extern</span> <span class="m">int</span>  <span class="b">arch_uprobe_pre_xol</span><span class="f">(</span><span class="m">struct</span> <span class="b">arch_uprobe</span> <span class="f">*</span><span class="b">aup</span><span class="f">,</span> <span class="m">struct</span> <span class="b">pt_regs</span> <span class="f">*</span><span class="b">regs</span><span class="f">)</span><span class="f">;</span>
<a name="132" /><span class="False">     132:</span> <span class="m">extern</span> <span class="m">int</span>  <span class="b">arch_uprobe_post_xol</span><span class="f">(</span><span class="m">struct</span> <span class="b">arch_uprobe</span> <span class="f">*</span><span class="b">aup</span><span class="f">,</span> <span class="m">struct</span> <span class="b">pt_regs</span> <span class="f">*</span><span class="b">regs</span><span class="f">)</span><span class="f">;</span>
<a name="133" /><span class="False">     133:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">arch_uprobe_xol_was_trapped</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">tsk</span><span class="f">)</span><span class="f">;</span>
<a name="134" /><span class="False">     134:</span> <span class="m">extern</span> <span class="m">int</span>  <span class="b">arch_uprobe_exception_notify</span><span class="f">(</span><span class="m">struct</span> <span class="b">notifier_block</span> <span class="f">*</span><span class="b">self</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">val</span><span class="f">,</span> <span class="m">void</span> <span class="f">*</span><span class="b">data</span><span class="f">)</span><span class="f">;</span>
<a name="135" /><span class="False">     135:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">arch_uprobe_abort_xol</span><span class="f">(</span><span class="m">struct</span> <span class="b">arch_uprobe</span> <span class="f">*</span><span class="b">aup</span><span class="f">,</span> <span class="m">struct</span> <span class="b">pt_regs</span> <span class="f">*</span><span class="b">regs</span><span class="f">)</span><span class="f">;</span>
<a name="136" /><span class="False">     136:</span> <span class="m">extern</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">arch_uretprobe_hijack_return_addr</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">trampoline_vaddr</span><span class="f">,</span> <span class="m">struct</span> <span class="b">pt_regs</span> <span class="f">*</span><span class="b">regs</span><span class="f">)</span><span class="f">;</span>
<a name="137" /><span class="True">     137:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* !CONFIG_UPROBES */</span>
<a name="138" /><span class="True">     138:</span> <span class="m">struct</span> <span class="b">uprobes_state</span> <span class="f">{</span>
<a name="139" /><span class="True">     139:</span> <span class="f">}</span><span class="f">;</span>
<a name="140" /><span class="True">     140:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span>
<a name="141" /><span class="True">     141:</span> <span class="b">uprobe_register</span><span class="f">(</span><span class="m">struct</span> <span class="b">inode</span> <span class="f">*</span><span class="b">inode</span><span class="f">,</span> <span class="b">loff_t</span> <span class="b">offset</span><span class="f">,</span> <span class="m">struct</span> <span class="b">uprobe_consumer</span> <span class="f">*</span><span class="b">uc</span><span class="f">)</span>
<a name="142" /><span class="True">     142:</span> <span class="f">{</span>
<a name="143" /><span class="True">     143:</span>     <span class="m">return</span> <span class="f">-</span><a href="cpu.c_macros_ref.html#_RU5PU1lTXzA_"><span class="b">ENOSYS</span></a><span class="f">;</span>
<a name="144" /><span class="True">     144:</span> <span class="f">}</span>
<a name="145" /><span class="True">     145:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span>
<a name="146" /><span class="True">     146:</span> <span class="b">uprobe_apply</span><span class="f">(</span><span class="m">struct</span> <span class="b">inode</span> <span class="f">*</span><span class="b">inode</span><span class="f">,</span> <span class="b">loff_t</span> <span class="b">offset</span><span class="f">,</span> <span class="m">struct</span> <span class="b">uprobe_consumer</span> <span class="f">*</span><span class="b">uc</span><span class="f">,</span> <span class="m">bool</span> <span class="b">add</span><span class="f">)</span>
<a name="147" /><span class="True">     147:</span> <span class="f">{</span>
<a name="148" /><span class="True">     148:</span>     <span class="m">return</span> <span class="f">-</span><a href="cpu.c_macros_ref.html#_RU5PU1lTXzA_"><span class="b">ENOSYS</span></a><span class="f">;</span>
<a name="149" /><span class="True">     149:</span> <span class="f">}</span>
<a name="150" /><span class="True">     150:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="151" /><span class="True">     151:</span> <span class="b">uprobe_unregister</span><span class="f">(</span><span class="m">struct</span> <span class="b">inode</span> <span class="f">*</span><span class="b">inode</span><span class="f">,</span> <span class="b">loff_t</span> <span class="b">offset</span><span class="f">,</span> <span class="m">struct</span> <span class="b">uprobe_consumer</span> <span class="f">*</span><span class="b">uc</span><span class="f">)</span>
<a name="152" /><span class="True">     152:</span> <span class="f">{</span>
<a name="153" /><span class="True">     153:</span> <span class="f">}</span>
<a name="154" /><span class="True">     154:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">uprobe_mmap</span><span class="f">(</span><span class="m">struct</span> <span class="b">vm_area_struct</span> <span class="f">*</span><span class="b">vma</span><span class="f">)</span>
<a name="155" /><span class="True">     155:</span> <span class="f">{</span>
<a name="156" /><span class="True">     156:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="157" /><span class="True">     157:</span> <span class="f">}</span>
<a name="158" /><span class="True">     158:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="159" /><span class="True">     159:</span> <span class="b">uprobe_munmap</span><span class="f">(</span><span class="m">struct</span> <span class="b">vm_area_struct</span> <span class="f">*</span><span class="b">vma</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">start</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">end</span><span class="f">)</span>
<a name="160" /><span class="True">     160:</span> <span class="f">{</span>
<a name="161" /><span class="True">     161:</span> <span class="f">}</span>
<a name="162" /><span class="True">     162:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">uprobe_start_dup_mmap</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="163" /><span class="True">     163:</span> <span class="f">{</span>
<a name="164" /><span class="True">     164:</span> <span class="f">}</span>
<a name="165" /><span class="True">     165:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">uprobe_end_dup_mmap</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="166" /><span class="True">     166:</span> <span class="f">{</span>
<a name="167" /><span class="True">     167:</span> <span class="f">}</span>
<a name="168" /><span class="True">     168:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span>
<a name="169" /><span class="True">     169:</span> <span class="b">uprobe_dup_mmap</span><span class="f">(</span><span class="m">struct</span> <span class="b">mm_struct</span> <span class="f">*</span><span class="b">oldmm</span><span class="f">,</span> <span class="m">struct</span> <span class="b">mm_struct</span> <span class="f">*</span><span class="b">newmm</span><span class="f">)</span>
<a name="170" /><span class="True">     170:</span> <span class="f">{</span>
<a name="171" /><span class="True">     171:</span> <span class="f">}</span>
<a name="172" /><span class="True">     172:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">uprobe_notify_resume</span><span class="f">(</span><span class="m">struct</span> <span class="b">pt_regs</span> <span class="f">*</span><span class="b">regs</span><span class="f">)</span>
<a name="173" /><span class="True">     173:</span> <span class="f">{</span>
<a name="174" /><span class="True">     174:</span> <span class="f">}</span>
<a name="175" /><span class="True">     175:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">uprobe_deny_signal</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="176" /><span class="True">     176:</span> <span class="f">{</span>
<a name="177" /><span class="True">     177:</span>     <span class="m">return</span> <span class="m">false</span><span class="f">;</span>
<a name="178" /><span class="True">     178:</span> <span class="f">}</span>
<a name="179" /><span class="True">     179:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">uprobe_get_swbp_addr</span><span class="f">(</span><span class="m">struct</span> <span class="b">pt_regs</span> <span class="f">*</span><span class="b">regs</span><span class="f">)</span>
<a name="180" /><span class="True">     180:</span> <span class="f">{</span>
<a name="181" /><span class="True">     181:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="182" /><span class="True">     182:</span> <span class="f">}</span>
<a name="183" /><span class="True">     183:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">uprobe_free_utask</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">t</span><span class="f">)</span>
<a name="184" /><span class="True">     184:</span> <span class="f">{</span>
<a name="185" /><span class="True">     185:</span> <span class="f">}</span>
<a name="186" /><span class="True">     186:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">uprobe_copy_process</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">t</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">)</span>
<a name="187" /><span class="True">     187:</span> <span class="f">{</span>
<a name="188" /><span class="True">     188:</span> <span class="f">}</span>
<a name="189" /><span class="True">     189:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">uprobe_clear_state</span><span class="f">(</span><span class="m">struct</span> <span class="b">mm_struct</span> <span class="f">*</span><span class="b">mm</span><span class="f">)</span>
<a name="190" /><span class="True">     190:</span> <span class="f">{</span>
<a name="191" /><span class="True">     191:</span> <span class="f">}</span>
<a name="192" /><span class="True">     192:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !CONFIG_UPROBES */</span>
<a name="193" /><span class="True">     193:</span> <span class="f">#</span><span class="n">endif</span>    <span class="k">/* _LINUX_UPROBES_H */</span>
<a name="194" /><span class="True">     194:</span> </pre>
  </body>
</html>
